package br.com.classificadosonline.persistencia;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import br.com.classificadosonline.nucleo.Pessoa;

public class PessoaDAO {

	private static final PessoaDAO instance = null;

	public static PessoaDAO getInstance()
	{
		if (instance == null)
		{
			instance = new PessoaDAO();
		}
		return instance;
	}

	public static PessoaDAO obterInstancia() {
		return (PessoaDAO) Conexao.select("SELECT * FROM PESSOA");
	}
	
	public static void cadastrarPessoa(String cpf, String nome, String telefone, String celular, String email, boolean SMS, String usuario, int codTipo) {
		Conexao.update("INSERT INTO PESSOA VALUES ('" + cpf + "', '" + nome + "', '" + telefone + "', '" + celular + "', '" + email + "', '" + SMS + "', '" + usuario + "', " + codTipo + ")");
	}
	
	public static void modificarPessoa(String cpf, String nome, String telefone, String celular, String email, boolean SMS) {
		Conexao.update("UPDATE PESSOA SET NOME='" + nome + "', TELEFONE='" + telefone + "', CELULAR='" + celular + "', EMAIL='" + email + "', SMS='" + SMS + "' WHERE CODIGO='" + cpf + "'");
	}	
	
	public static Pessoa buscarPessoa(String cpf) {
		return buscar("SELECT * FROM PESSOA WHERE CPF='" + cpf + "'").get(0);
	}
	
	public static Pessoa buscarPessoaPorUsuario(String usuario) {
		return buscar("SELECT * FROM PESSOA WHERE USUARIO='" + usuario + "'").get(0);
	}
	
	public static List<Pessoa> buscar(String query) {
		ResultSet rs = null;
		List<Pessoa> lista = new ArrayList<Pessoa>();
		Pessoa pessoa = null;	
		Statement stmt;
		try {
			stmt = Conexao.conexao().createStatement();							
			rs = stmt.executeQuery(query);
			while (rs.next()) {
				pessoa = new Pessoa(rs.getString("CPF"), rs.getString("NOME"), rs.getString("TELEFONE"), rs.getString("CELULAR"), rs.getString("EMAIL"), rs.getBoolean("SMS"), rs.getInt("CODTIPO"));
				lista.add(pessoa);
			}
			stmt.close();
			Conexao.conexao().close();	
		} catch (SQLException e) {
		}
		return lista;
	}
	
	public static List<Pessoa> listarPessoa() {
		return buscar("SELECT * FROM PESSOA");
	}
	
	public static void excluirPessoa(String cpf) {
		Conexao.update("DELETE FROM PESSOA WHERE CPF='" + cpf + "'");
	}	
}
